TPTP Problem File: DAT056^1.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : DAT056^1 : TPTP v8.2.0. Released v5.4.0.
% Domain   : Data Structures
% Problem  : List operation requiring induction
% Version  : Especial.
% English  :

% Refs     : [Bla12] Blanchette (2012), Email to Geoff Sutcliffe
% Source   : [Bla12]
% Names    : easy.tptp [Bla12]

% Status   : Theorem
% Rating   : 0.20 v8.2.0, 0.23 v8.1.0, 0.18 v7.5.0, 0.14 v7.4.0, 0.33 v7.2.0, 0.25 v7.1.0, 0.38 v7.0.0, 0.43 v6.4.0, 0.50 v6.3.0, 0.60 v6.2.0, 0.43 v5.5.0, 0.33 v5.4.0
% Syntax   : Number of formulae    :   10 (   3 unt;   6 typ;   0 def)
%            Number of atoms       :    7 (   7 equ;   0 cnn)
%            Maximal formula atoms :    4 (   1 avg)
%            Number of connectives :   57 (   0   ~;   0   |;   0   &;  54   @)
%                                         (   0 <=>;   3  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    9 (   5 avg)
%            Number of types       :    2 (   2 usr)
%            Number of type conns  :    4 (   4   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :    5 (   4 usr;   2 con; 0-2 aty)
%            Number of variables   :   17 (   0   ^;  17   !;   0   ?;  17   :)
% SPC      : TH0_THM_EQU_NAR

% Comments : Induction principle is preinstantiated with the conjecture.
%------------------------------------------------------------------------------
%----Should-be-implicit typings (2)
thf(ty_n_tc__Foo__Olst_It__J,type,
    lst: $tType ).

thf(ty_n_t_,type,
    a: $tType ).

%----Explicit typings (4)
thf(sy_c_Foo_Oap_001t_,type,
    ap: lst > lst > lst ).

thf(sy_c_Foo_Olst_OCns_001t_,type,
    cns: a > lst > lst ).

thf(sy_c_Foo_Olst_ONl_001t_,type,
    nl: lst ).

thf(sy_v_xs,type,
    xs: lst ).

%----Relevant facts (3)
thf(fact_0_lst_Oinduct_091where_AP_A_061_A_C_Fxs_O_AALL_Ays_Azs_O_Aap_Axs_A_Iap_Ays_Azs_J_A_061_Aap_A_Iap_Axs_Ays_J_Azs_C_093,axiom,
    ! [Lst: lst] :
      ( ! [Ys: lst,Zs: lst] :
          ( ( ap @ nl @ ( ap @ Ys @ Zs ) )
          = ( ap @ ( ap @ nl @ Ys ) @ Zs ) )
     => ( ! [A: a,Lst2: lst] :
            ( ! [Ys3: lst,Zs2: lst] :
                ( ( ap @ Lst2 @ ( ap @ Ys3 @ Zs2 ) )
                = ( ap @ ( ap @ Lst2 @ Ys3 ) @ Zs2 ) )
           => ! [Ys: lst,Zs: lst] :
                ( ( ap @ ( cns @ A @ Lst2 ) @ ( ap @ Ys @ Zs ) )
                = ( ap @ ( ap @ ( cns @ A @ Lst2 ) @ Ys ) @ Zs ) ) )
       => ! [Ys3: lst,Zs2: lst] :
            ( ( ap @ Lst @ ( ap @ Ys3 @ Zs2 ) )
            = ( ap @ ( ap @ Lst @ Ys3 ) @ Zs2 ) ) ) ) ).

thf(fact_1p_Osimps_I2_J,axiom,
    ! [Ys2: lst,Xs: lst,X: a] :
      ( ( ap @ ( cns @ X @ Xs ) @ Ys2 )
      = ( cns @ X @ ( ap @ Xs @ Ys2 ) ) ) ).

thf(fact_2p_Osimps_I1_J,axiom,
    ! [Ys2: lst] :
      ( ( ap @ nl @ Ys2 )
      = Ys2 ) ).

%----Conjectures (1)
thf(conj_0,conjecture,
    ! [Ys: lst,Zs: lst] :
      ( ( ap @ xs @ ( ap @ Ys @ Zs ) )
      = ( ap @ ( ap @ xs @ Ys ) @ Zs ) ) ).

%------------------------------------------------------------------------------